/*
 * ObjectTools.java
 *
 * Created on June 25, 2005, 1:25 AM
 *
 * To change this template, choose Tools | Options and locate the template under
 * the Source Creation and Management node. Right-click the template and choose
 * Open. You can then make changes to the template in the Source Editor.
 */
package ge.ktools;

import org.apache.commons.lang.SerializationUtils;

import java.io.Serializable;

public class ObjectTools
{
    
    /** Creates a new instance of ObjectTools */
    public ObjectTools()
    {
        
    }
    
//    static public byte[] convertToBytes(Object obj) throws IOException
//    {
//
//        ObjectOutputStream oos = null;
//        try
//        {
//            ByteArrayOutputStream bos =
//                    new ByteArrayOutputStream();
//            oos = new ObjectOutputStream(bos);
//            // serialize and pass the object
//            oos.writeObject(obj);
//            oos.flush();
//            return bos.toByteArray();
//        }
//        catch(Exception e)
//        {
//            throw(new IOException(e.getMessage()));
//        }
//        finally
//        {
//            try
//            {
//                oos.close();
//            }
//            catch (IOException eio)
//            {}
//        }
//    }
//    static public Object deepCopy(Object oldObj)
//    {
//        ObjectInputStream ois = null;
//        try
//        {
//            ByteArrayInputStream bin =
//                    new ByteArrayInputStream(convertToBytes(oldObj));
//            ois = new ObjectInputStream(bin);
//            // return the new object
//            return ois.readObject();
//        }
//        catch(Exception e)
//        {
//            e.printStackTrace();
//        }
//        finally
//        {
//            try
//            {
//                ois.close();
//            }
//            catch (Exception eio)
//            {}
//        }
//        return null;
//    }
    public static boolean areSame(Object obj1, Object obj2)
    {
        
        if(obj1 == null || obj2 == null)
        {
            return obj1 == null && obj2 == null;
        }
        
        return (new String(SerializationUtils.serialize((Serializable)obj1))).equals(new String(SerializationUtils.serialize((Serializable)obj2)));
        
    }
//    public static void main(String[] args) throws IOException
//    {
//
//        System.out.println(new java.util.Date(System.currentTimeMillis()));
//        for (int i = 0 ; i <100000; i++)
//        {
//            ge.kedu.domain.Entrant e = new ge.kedu.domain.Entrant();
//            java.util.ArrayList al = new java.util.ArrayList();
//            e.setExams(al);
//            ge.kedu.domain.Entrant e1 = (ge.kedu.domain.Entrant ) deepCopy(e);
//        }
//        System.out.println(new java.util.Date(System.currentTimeMillis()));
//        for (int i = 0 ; i <100000; i++)
//        {
//            ge.kedu.domain.Entrant e = new ge.kedu.domain.Entrant();
//            java.util.ArrayList al = new java.util.ArrayList();
//            e.setExams(al);
//            ge.kedu.domain.Entrant e1 = (ge.kedu.domain.Entrant ) SerializationUtils.clone(e);
//        }
//        System.out.println(new java.util.Date(System.currentTimeMillis()));
//    }
}
